package main

import "fmt"

//只读 只写管道的最佳实践
//其实管道的属性主要是用于限定函数的作用，防止进行不该进行的操作
func main() {
	intchan := make(chan int, 10)
	go write(intchan)
	read(intchan)
}

func write(intchan chan<- int) {
	defer close(intchan)
	for i := 0; i < 20; i++ {
		intchan <- i
	}
	//<-intchan 函数内部就做不了读取操作
	fmt.Println("写入结束")
}

func read(intchan <-chan int) {
	for v := range intchan {
		fmt.Println(v)
	}
	fmt.Println("读取结束")
}
